﻿
create proc [dbo].[sp_menu_dinamico]

(
	 @padre varchar(60)
	,@cod_persona varchar(20)
	,@as_institucion varchar(40)
	,@as_sucursal varchar(40)
	
)
as
if @padre is null or @padre = ''

	select DISTINCT SG_CODIGO_OPCION
		,SG_TIPO_OPCION
		,SG_NOMBRE
		,SG_DESCRIPCION
		,SG_ORDEN
	from SGOPCIONES
	where  (SG_CODIGO_PADRE is null or SG_CODIGO_PADRE = '')
		and SG_CODIGO_OPCION IN (SELECT DISTINCT SGPERMISOS.SG_CODIGO_OPCION

			FROM   SGMIEMBROS
				,SGPERMISOS
			WHERE  	SGMIEMBROS.SG_CODIGO_GRUPO = SGPERMISOS.SG_CODIGO_GRUPO
				AND (SGMIEMBROS.GD_CODIGO_PERSONA IN (
					SELECT GDFUNCIONARIO_AREA.GD_CODIGO_PERSONA
					FROM   GDFUNCIONARIO_AREA
					WHERE GDFUNCIONARIO_AREA.GD_CODIGO_PERSONA = @cod_persona and
						GDFUNCIONARIO_AREA.GD_CODIGO_INSTITUCION = @as_institucion and
						GDFUNCIONARIO_AREA.GD_CODIGO_SUCURSAL =  @as_sucursal)))
	order by SG_ORDEN

else

	select DISTINCT SG_CODIGO_OPCION
		,SG_TIPO_OPCION
		,SG_NOMBRE
		,SG_DESCRIPCION
		,SG_ORDEN
	from SGOPCIONES
	where  SG_CODIGO_PADRE = @padre 
		and (SG_CODIGO_OPCION IN (SELECT DISTINCT SGPERMISOS.SG_CODIGO_OPCION

			FROM   SGMIEMBROS
				,SGPERMISOS
			WHERE  	SGMIEMBROS.SG_CODIGO_GRUPO = SGPERMISOS.SG_CODIGO_GRUPO
				AND (SGMIEMBROS.GD_CODIGO_PERSONA IN (
					SELECT GDFUNCIONARIO_AREA.GD_CODIGO_PERSONA
					FROM   GDFUNCIONARIO_AREA
					WHERE GDFUNCIONARIO_AREA.GD_CODIGO_PERSONA = @cod_persona and
						GDFUNCIONARIO_AREA.GD_CODIGO_INSTITUCION = @as_institucion and
						GDFUNCIONARIO_AREA.GD_CODIGO_SUCURSAL =  @as_sucursal)))

			or SG_NOMBRE = '-')
	order by SG_ORDEN









